{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import os\n",
    "# for i in range(14):\n",
    "#     os.system(f'wget https://f000.backblazeb2.com/file/malay-dataset/tatabahasa/dataset-tatabahasa-{i}.pkl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !wget https://huggingface.co/datasets/mesolitica/kesalahan-tatabahasa/resolve/main/train.jsonl\n",
    "# !wget https://huggingface.co/datasets/mesolitica/kesalahan-tatabahasa/resolve/main/train2.jsonl\n",
    "# !wget https://huggingface.co/datasets/mesolitica/kesalahan-tatabahasa/resolve/main/test.jsonl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['dataset-tatabahasa-0.pkl',\n",
       " 'dataset-tatabahasa-1.pkl',\n",
       " 'dataset-tatabahasa-10.pkl',\n",
       " 'dataset-tatabahasa-11.pkl',\n",
       " 'dataset-tatabahasa-12.pkl',\n",
       " 'dataset-tatabahasa-13.pkl',\n",
       " 'dataset-tatabahasa-2.pkl',\n",
       " 'dataset-tatabahasa-3.pkl',\n",
       " 'dataset-tatabahasa-4.pkl',\n",
       " 'dataset-tatabahasa-5.pkl',\n",
       " 'dataset-tatabahasa-6.pkl',\n",
       " 'dataset-tatabahasa-7.pkl',\n",
       " 'dataset-tatabahasa-8.pkl',\n",
       " 'dataset-tatabahasa-9.pkl']"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from glob import glob\n",
    "import pickle\n",
    "\n",
    "pkls = sorted(glob('*.pkl'))\n",
    "pkls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(pkls[0], 'rb') as fopen:\n",
    "    data = pickle.load(fopen)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 37%|███████████████████████████████▊                                                       | 36532/99938 [00:00<00:00, 72643.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 67%|██████████████████████████████████████████████████████████                             | 66763/99938 [00:00<00:00, 73515.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99938/99938 [00:01<00:00, 74239.19it/s]\n",
      " 22%|███████████████████▏                                                                   | 22100/99922 [00:00<00:01, 71166.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 44%|██████████████████████████████████████▏                                                | 43917/99922 [00:00<00:00, 72090.62it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 67%|██████████████████████████████████████████████████████████▍                            | 67081/99922 [00:00<00:00, 75635.98it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99922/99922 [00:01<00:00, 72726.45it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 14%|███████████▊                                                                           | 13523/99898 [00:00<00:01, 67819.12it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 28%|████████████████████████▏                                                              | 27771/99898 [00:00<00:01, 70182.07it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 44%|█████████████████████████████████████▊                                                 | 43462/99898 [00:00<00:00, 74064.35it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 81%|██████████████████████████████████████████████████████████████████████▎                | 80766/99898 [00:01<00:00, 70768.32it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 96%|███████████████████████████████████████████████████████████████████████████████████    | 95403/99898 [00:01<00:00, 71595.64it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99898/99898 [00:01<00:00, 71703.17it/s]\n",
      " 15%|████████████▉                                                                          | 14902/99949 [00:00<00:01, 71019.03it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 50%|███████████████████████████████████████████▉                                           | 50429/99949 [00:00<00:00, 69061.96it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 91%|███████████████████████████████████████████████████████████████████████████████▎       | 91086/99949 [00:01<00:00, 77105.91it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99949/99949 [00:01<00:00, 73506.38it/s]\n",
      " 43%|█████████████████████████████████████                                                  | 42510/99919 [00:00<00:00, 67541.54it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 77%|██████████████████████████████████████████████████████████████████▋                    | 76537/99919 [00:01<00:00, 67844.67it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99919/99919 [00:01<00:00, 68826.98it/s]\n",
      " 43%|█████████████████████████████████████▌                                                 | 43149/99965 [00:00<00:00, 81959.82it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99965/99965 [00:01<00:00, 83777.77it/s]\n",
      " 50%|███████████████████████████████████████████▌                                           | 49990/99955 [00:00<00:00, 69579.45it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 71%|██████████████████████████████████████████████████████████████                         | 71347/99955 [00:01<00:00, 70661.72it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99955/99955 [00:01<00:00, 71344.97it/s]\n",
      " 23%|████████████████████▏                                                                  | 23154/99926 [00:00<00:01, 76753.01it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 75%|█████████████████████████████████████████████████████████████████▋                     | 75392/99926 [00:01<00:00, 71826.11it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 90%|██████████████████████████████████████████████████████████████████████████████▏        | 89844/99926 [00:01<00:00, 72028.56it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99926/99926 [00:01<00:00, 72541.53it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 14%|████████████▏                                                                          | 14069/99935 [00:00<00:01, 69154.84it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 28%|████████████████████████▍                                                              | 28134/99935 [00:00<00:01, 70005.76it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 50%|███████████████████████████████████████████▎                                           | 49751/99935 [00:00<00:00, 70368.53it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 64%|███████████████████████████████████████████████████████▌                               | 63810/99935 [00:00<00:00, 70000.58it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 85%|█████████████████████████████████████████████████████████████████████████▋             | 84624/99935 [00:01<00:00, 68350.00it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99935/99935 [00:01<00:00, 70454.40it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      " 22%|███████████████████▍                                                                   | 22282/99898 [00:00<00:01, 72995.80it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 45%|██████████████████████████████████████▉                                                | 44713/99898 [00:00<00:00, 71291.67it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99898/99898 [00:01<00:00, 71570.71it/s]\n",
      " 14%|████████████▍                                                                          | 14247/99906 [00:00<00:01, 71993.06it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 78%|████████████████████████████████████████████████████████████████████▎                  | 78396/99906 [00:01<00:00, 70198.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 93%|████████████████████████████████████████████████████████████████████████████████▋      | 92604/99906 [00:01<00:00, 70604.81it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99906/99906 [00:01<00:00, 71130.32it/s]\n",
      " 67%|██████████████████████████████████████████████████████████                             | 66763/99942 [00:00<00:00, 71418.58it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 88%|████████████████████████████████████████████████████████████████████████████▋          | 88124/99942 [00:01<00:00, 69306.46it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99942/99942 [00:01<00:00, 71068.89it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 34%|█████████████████████████████▊                                                         | 34197/99880 [00:00<00:00, 68804.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 56%|████████████████████████████████████████████████▊                                      | 55978/99880 [00:00<00:00, 70362.52it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 77%|███████████████████████████████████████████████████████████████████                    | 76978/99880 [00:01<00:00, 68340.77it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99880/99880 [00:01<00:00, 70184.01it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 22%|███████████████████▏                                                                   | 22007/99907 [00:00<00:01, 69152.90it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 51%|████████████████████████████████████████████                                           | 50606/99907 [00:00<00:00, 69493.28it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 65%|████████████████████████████████████████████████████████▏                              | 64505/99907 [00:00<00:00, 69355.02it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████████| 99907/99907 [00:01<00:00, 69556.46it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n",
      "skip\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "from tqdm import tqdm\n",
    "\n",
    "with open('train-v2.json', 'w') as fopen_jsonl:\n",
    "    for f in pkls:\n",
    "        with open(f, 'rb') as fopen:\n",
    "            data = pickle.load(fopen)\n",
    "        for d in tqdm(data):\n",
    "            if len(d[0]) > 150:\n",
    "                print('skip')\n",
    "                continue\n",
    "            d = {\"translation\": {'data': json.dumps(d), 'prefix': 'kesalahan tatabahasa: '}}\n",
    "            fopen_jsonl.write(f'{json.dumps(d)}\\n')\n",
    "    \n",
    "    for f in ['train.jsonl', 'train2.jsonl']:\n",
    "        with open(f) as fopen:\n",
    "            for l in fopen:\n",
    "                data = json.loads(l)\n",
    "                if len(data[0]) > 150:\n",
    "                    print('skip')\n",
    "                    continue\n",
    "                d = {\"translation\": {'data': json.dumps(data), 'prefix': 'kesalahan tatabahasa: '}}\n",
    "                fopen_jsonl.write(f'{json.dumps(d)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('test-v2.json', 'w') as fopen_jsonl:\n",
    "    for f in ['test.jsonl']:\n",
    "        with open(f) as fopen:\n",
    "            for l in fopen:\n",
    "                data = json.loads(l)\n",
    "                if len(data[0]) > 150:\n",
    "                    print('skip')\n",
    "                    continue\n",
    "                d = {\"translation\": {'data': json.dumps(data), 'prefix': 'kesalahan tatabahasa: '}}\n",
    "                fopen_jsonl.write(f'{json.dumps(d)}\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "!shuf train-v2.json > shuffled-train.json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "13"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(json.loads(d['translation']['data'])[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
